package assignment7;

import java.util.Set;
import java.util.TreeSet;

/**
 * FriendGraph class contains the data structure and data retrieval/commission
 * methods
 * 
 * @author Terry Wasserleben CS204-21370 Prof. Jeannette Myers Due: 11/21/2011
 */
public class FriendGraph implements Graph<Vertex, Set<Edge>> {
	
	private TreeSet<Vertex> vertex;
	private Set<Edge> edge;
	
	/**
	 * FriendGraph Constructor
	 */
	public FriendGraph() {
		vertex = new TreeSet<Vertex>();
	}
	
	/**
	 * method to add an Edge to a target Vertex from a source Vertex, as
	 * implemented in Friends of Friends
	 * 
	 * @param sourceVertex Vertex where the Edge exists
	 * @param targetVertex Vertex where the Edge needs to be added to
	 * @return Returns Edge type
	 */
	@Override
	public Set<Edge> addEdge(Vertex sourceVertex, Vertex targetVertex) {
		// TODO Auto-generated method stub
		while (!containsEdge(sourceVertex, targetVertex)) {
			return null;
		}
		return null;
	}
	
	/**
	 * method to add a Vertex
	 * 
	 * @param vertex Vertex passed
	 * @return boolean returned to let the calling method know whether or not
	 *         the addition was successful
	 */
	@Override
	public boolean addVertex(Vertex vertex) {
		// TODO Auto-generated method stub
		return false;
	}
	
	/**
	 * method to check if an Edge exists
	 * 
	 * @param sourceVertex source Vertex checked if an Edge exists
	 * @param targetVertex target Vertex checked if an Edge exists
	 * @return boolean returned to let the calling method know whether or not
	 *         the Edge exists between the two Vertices
	 */
	@Override
	public boolean containsEdge(Vertex sourceVertex, Vertex targetVertex) {
		// TODO Auto-generated method stub
		
		return false;
	}
	
	/**
	 * method to check if a Vertex exists
	 * 
	 * @param vertex Vertex variable passed to be checked
	 * @return boolean returned to let the calling method know whether or not
	 *         the Vertex exists
	 */
	@Override
	public boolean containsVertex(Vertex vertex) {
		// TODO Auto-generated method stub
		return false;
	}
	
	/**
	 * method to return a Set of Edge type
	 * 
	 * @return Set of type Edge returned (expansion: Edge is defined by
	 *         Edge.java as being (String)fName:(String)lName)
	 */
	@Override
	public Set<Set<Edge>> edgeSet() {
		// TODO Auto-generated method stub
		return null;
	}
	
	/**
	 * method to get all Edges of a certain Vertex
	 * 
	 * @param vertex Vertex that is being accessed
	 * @return Set of type Edge returned (expansion: Edge is defined by
	 *         Edge.java as being (String)fName:(String)lName)
	 */
	@Override
	public Set<Set<Edge>> edgesOf(Vertex vertex) {
		// TODO Auto-generated method stub
		return null;
	}
	
	/**
	 * method to get Edge that is associated with Vertex sourceVertex and Vertex
	 * targetVertex
	 * 
	 * @param sourceVertex source Vertex accessed
	 * @param targetVertex target Vertex accessed
	 * @return Edge returned associated with
	 */
	@Override
	public Set<Edge> getEdge(Vertex sourceVertex, Vertex targetVertex) {
		// TODO Auto-generated method stub
		return null;
	}
	
	/**
	 * method to remove an Edge that is associated with Vertex sourceVertex and
	 * Vertex targetVertex
	 * 
	 * @param sourceVertex source Vertex accessed
	 * @param targetVertex target Vertex accessed
	 * @return Edge returned associated with
	 */
	@Override
	public Set<Edge> removeEdge(Vertex sourceVertex, Vertex targetVertex) {
		// TODO Auto-generated method stub
		return null;
	}
	
	/**
	 * method to remove a Vertex
	 * 
	 * @param vertex Vertex object to be removed
	 * @return boolean returns a true or false if successful or not,
	 *         respectively
	 */
	@Override
	public boolean removeVertex(Vertex vertex) {
		// TODO Auto-generated method stub
		return false;
	}
	
	/**
	 * method to return a Set of Vertices
	 * 
	 * @return Set of type Vertex of Vertices
	 */
	@Override
	public Set<Vertex> vertexSet() {
		// TODO Auto-generated method stub
		return vertex.descendingSet();
	}
	
}
